package com.vxdata

import scala.util.control.Breaks
import scala.util.control.Breaks.{break, breakable}

object 基础_5_循环控制 {
  def main(args: Array[String]): Unit = {
    /**
     * TODO while循环
     * 先判断, 在执行
     */
    var i = 0
    while (i < 10) {
      println("宋宋，喜欢海狗人参丸" + i)
      i += 1
    }


    /**
     * TODO do...while循环
     * 先执行, 再判断
     */
    do {
      println("宋宋，喜欢海狗人参丸" + i)
      i += 1
    } while (i < 10)


    /**
     * TODO 循环中断
     * scala中没有 break 和 continue
     * Scala中使用 breakable , 控制结构来实现 break 和 continue 功能
     */
    // 1. 采用异常的方式退出循环
    try {
      for (elem <- 1 to 10) {
        println(elem)
        if (elem == 5) throw new RuntimeException
      }
    } catch {
      case e =>
    }

    // 2. 采用 Scala 自带的函数，退出循环
    Breaks.breakable(
      for (elem <- 1 to 10) {
        println(elem)
        if (elem == 5) Breaks.break()
      }
    )

    // 3. 对 break 进行省略写法, 退出循环
    breakable {
      for (elem <- 1 to 10) {
        println(elem)
        if (elem == 5) break
      }
    }


    // 循环遍历 10 以内的所有数据，奇数打印，偶数跳过（continue）
    for (elem <- 1 to 10) {
      if (elem % 2 == 1) {
        println(elem)
      } else {
      }
    }


    // 嵌套循环 打印出九九乘法表
    for (i <- 1 to 9) {
      for (j <- 1 to i) {
        print(j + "*" + i + "=" + (i * j) + "\t")
      }
      println()
    }
  }

}
